package modelApp

import java.util.List
import model.Pais
import org.uqbar.commons.model.ObservableUtils
import org.uqbar.commons.utils.Observable

@Observable
class ContenedorInformacionViaje {
	
	@Property val List<Pais> recorridoSeguido = newArrayList
	@Property var String recorridoSeguidoString
	@Property val List<Pais> destinosFallidos = newArrayList
	
	
	new(Pais paisInicial){
		this.recorridoSeguido.add(paisInicial)
		this.armar
	}

	
	/*
	 * Agrega un pais al recorrido
	 */
	def agregarPaisRecorrido(Pais p){
		this.recorridoSeguido.add(p)
		this.armar
	}
	
	/*
	 *  Agrega un destiino fallido al recorrido
	 */
	def agregarDestinoFallido(Pais p){
		this.destinosFallidos.add(p)
		ObservableUtils.firePropertyChanged(this, "destinosFallidos", destinosFallidos)
	}
	
	/*
	 * Muestra el recorrido como un string.
	 */
	def armar() {
		this.recorridoSeguidoString = this.recorridoSeguido.fold("")[r,p | r.concat('''«p.toString» <- ''')]
		ObservableUtils.firePropertyChanged(this, "recorridoSeguidoString", recorridoSeguidoString)
	}
	
}